/*
    客户端
*/

#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <arpa/inet.h>
#include <netinet/in.h>

int main()
{
    char *port = "8888";
    char *ip = "0.0.0.0";
    // socket 函数
    // 创建Socket的通信端点对象（内核）
    // 端点对象的指针信息存放在文件描述符数组
    // 返回给我们一个文件描述符数组下标
    
    // 参数 协议 协议类型 协议0使用默认 
    int socket_fd = socket(AF_INET, SOCK_STREAM, 0);
    
    // 构建目的主机的ip和端口
    struct sockaddr_in sockaddr;
    // 字符串转int，然后 htons 将小端存储转化为大端存储
    sockaddr.sin_port = htons(atoi(port));
    sockaddr.sin_addr.s_addr = inet_addr(ip);
    sockaddr.sin_family = AF_INET;
    // 三次握手
    int ret = connect(socket_fd, (struct sockaddr*)&sockaddr, sizeof(sockaddr));
    if(ret == -1)
    {
        perror("建立连接失败！");
        exit(1);
    }
    // 说明建立连接成功
    send(socket_fd, "hello", 5, 0);

    char buf[60];
    recv(socket_fd, buf, sizeof(buf), 0);
    printf("%s\n", buf);

    close(socket_fd);
    return 0;
}